package at.ac.univie.zsu.aguataplan.dao;

import java.util.List;

import at.ac.univie.zsu.aguataplan.domain.Event;
import at.ac.univie.zsu.aguataplan.domain.EventAttribute;
import at.ac.univie.zsu.aguataplan.domain.EventAttributeValueString;

/**
 * @author gerry
 * 
 */
public interface EventDao {

	public void cleanEventEventAttributeEventAttributeValueString() throws Exception;

	// --------------

	public Event addEvent(Event event) throws Exception;

	public Event getEventById(long id) throws Exception;

	public void deleteEvent(long id) throws Exception;

	public List<Event> getEventList() throws Exception;

	public Event mergeEvent(Event event) throws Exception;

	public List<Event> getEventListNonEmpty() throws Exception;

	// --------------

	public EventAttribute addEventAttribute(EventAttribute eventAttribute) throws Exception;

	public EventAttribute getEventAttributeById(long id) throws Exception;

	public void deleteEventAttribute(long id) throws Exception;

	public List<EventAttribute> getEventAttributeList() throws Exception;

	public EventAttribute mergeEventAttribute(EventAttribute eventAttribute) throws Exception;

	public List<EventAttribute> getEventAttributeListByEventNonEmpty(Event event) throws Exception;

	// --------------

	public EventAttributeValueString addEventAttributeValueString(EventAttributeValueString eventAttributeValueString)
			throws Exception;

	public EventAttributeValueString getEventAttributeValueStringById(long id) throws Exception;

	public void deleteEventAttributeValueString(long id) throws Exception;

	public List<EventAttributeValueString> getEventAttributeValueStringList() throws Exception;

	public EventAttributeValueString mergeEventAttributeValueString(EventAttributeValueString eventAttributeValueString)
			throws Exception;

	public List<EventAttributeValueString> getEventAttributeValueStringListByEventAttribute(
			EventAttribute eventAttribute) throws Exception;

	// --------------

	public void addEventEventAttribute(Event event, EventAttribute eventAttribute) throws Exception;

	public void addEventAttributeEventAttributeValueString(EventAttribute eventAttribute,
			EventAttributeValueString eventAttributeValueString) throws Exception;

	public void deleteEventEventAttribute(Event event, EventAttribute eventAttribute) throws Exception;

	public void deleteEventAttributeEventAttributeValueString(EventAttribute eventAttribute,
			EventAttributeValueString eventAttributeValueString) throws Exception;

}
